﻿using System;

namespace 迭代器模式
{
    /// <summary>
    /// 具体迭代器，实现了抽象迭代器中的四个方法，
    /// 在它的构造函数中需要接受一个具体聚集类型的参数，
    /// 在这里面我们可以根据实际的情况去编写不同的迭代方式
    /// </summary>
    public class ConcreteIterator: IIterator
    {
        private ConcreteList _list;
        private int _index;

        public ConcreteIterator(ConcreteList list)
        {
            _list = list;
            _index = 0;
        }

        public bool MoveNext()
        {
            if (_index < _list.Length)
                return true;
            return false;
        }

        public object CurrentItem()
        {
            return _list.GetElement(_index);
        }

        public void First()
        {
            _index = 0;
        }

        public void Next()
        {
            if (_index < _list.Length)
                _index++;
        }
    }
}
